#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
# Copyright [Gtlions Lai].
# Create Date:
# Update Date:
"""summarization ahout this script.

detail ahout this script

   Class(): summarization about Class
   ...
   function(): summarization about function
   ...
"""
__authors__ = '"Gtlions Lai" <gtlions.l@qq.com>'

import psycopg2
import csv

db = psycopg2.connect(dbname="bigdatagp", user="gpadmin", host="10.46.219.48")
# db = psycopg2.connect(dbname="bigdatagp", user="gpadmin", host="10.46.219.48")
# db = psycopg2.connect(dbname="bigdatagp", user="gpadmin", host="10.46.219.48")

cur = db.cursor()
cur.execute('select current_database()')
current_database = cur.fetchone()

f = open("gp_object_size" + current_database[0] + ".csv", "w")
writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)

cur.execute(
    '''select a.schemaname ,a.tablename ,a.tableowner from pg_tables a where a.schemaname not like 'pg_temp%' and a.schemaname not in ('gp_toolkit','information_schema','pg_catalog','gpmg') order by 1,2;''')
writer.writerow(("schemaname", "tablename", "tableowner", "size-1", "size-byte"), )

for object in cur.fetchall():
    objectname = object[0] + '.' + object[1]
    try:
        cur.execute(
            "select pg_size_pretty(pg_total_relation_size('" + objectname + "')),pg_total_relation_size('" + objectname + "');")
        sizeinfo = cur.fetchone()
        writer.writerow(object + sizeinfo)
    except psycopg2.ProgrammingError, e:
        print e

f.close()
cur.close()
db.commit()
db.close()
